1   /**
2    * Copyright 2014 Netflix, Inc.
3    * 
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    * 
8    * http://www.apache.org/licenses/LICENSE-2.0
9    * 
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package rx.internal.operators;
17  
18  import static org.mockito.Mockito.mock;
19  import static org.mockito.Mockito.never;
20  import static org.mockito.Mockito.times;
21  import static org.mockito.Mockito.verify;
22  
23  import org.junit.Test;
24  
25  import rx.Observable;
26  import rx.Observer;
27  
28  public class OperatorCastTest {
29  
30      @Test
31      public void testCast() {
32          Observable<?> source = Observable.just(1, 2);
33          Observable<Integer> observable = source.cast(Integer.class);
34  
35          @SuppressWarnings("unchecked")
36          Observer<Integer> observer = mock(Observer.class);
37          observable.subscribe(observer);
38          verify(observer, times(1)).onNext(1);
39          verify(observer, times(1)).onNext(1);
40          verify(observer, never()).onError(
41                  org.mockito.Matchers.any(Throwable.class));
42          verify(observer, times(1)).onCompleted();
43      }
44  
45      @Test
46      public void testCastWithWrongType() {
47          Observable<?> source = Observable.just(1, 2);
48          Observable<Boolean> observable = source.cast(Boolean.class);
49  
50          @SuppressWarnings("unchecked")
51          Observer<Boolean> observer = mock(Observer.class);
52          observable.subscribe(observer);
53          verify(observer, times(1)).onError(
54                  org.mockito.Matchers.any(ClassCastException.class));
55      }
56  }